michaelmn
Goto Top

Problem mit Invoke-RestMethod

Hallo,

sorry für die "Anfängerfrage", ich mach sonst kaum etwas mit der PS und komm momentan nicht weiter face-smile

Ich habe folgenden, funktionierenden (!) curl - Aufruf an eine REST - API:

curl -u <user>:<passwort> https://<firmenadr>/confluence_secure/rest/api/content/258775490

Wie gesagt, der funktioniert, und liefert das korrekte zurück - und den muss ich in einem PS-Script einfügen. Nur, wie sieht die korrekte PS-Syntax dafür aus?

Ich hab folgendes probiert:

$Credential = Get-Credential -Message "Bitte User/Passwort für Confluence eingeben"  

$Request = Invoke-RestMethod -Method Get -Credential $Credential -Uri "https://<firmenadr>/confluence_secure/rest/api/content/258775490"  

Ausgabe: "Invoke-RestMethod : Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden."

Genau das gleiche Codeschnippsel mit Invoke-WebRequest anstatt Invoke-RestMethod ändert genau nichts, gleicher Fehler, 404 nicht gefunden.

Es muss wohl an meiner Autorisierung liegen, die API liefert ja sowohl mittels curl als auch im WebBrowser sehr wohl die richtige Seite. Was also mach ich falsch?

Danke u. LG
Michael

PS: Wenn ich curl innerhalb des PS-Scripts aufrufe, weiss ich leider nicht, wie die curl - Ausgabe richtig an's Script zurückgegeben wird ... face-smile

Content-Key: 41969359383

Url: https://administrator.de/contentid/41969359383

Printed on: May 10, 2024 at 08:05 o'clock

Mitglied: 11078840001
Solution 11078840001 Feb 16, 2024 updated at 10:23:51 (UTC)
Goto Top
Manche APIs wollen den Authorization Header für Basic Auth bei der ersten Anfrage mitgeliefert bekommen, bei Nutzung des Credential Parameters wird erst eine Anfrage ohne den Header gesendet und auf eine 401 http Response gewartet woraufhin erst dann die Creds im Header mitgeschickt werden und das führt dann zu deinem o.g. Ergebnis, also die Credentials mal direkt im Header mitgeben, dann sollte es klappen, sofern die URL auch stimmt 😉
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(("{0}:{1}" -f 'username','password')))  
Invoke-RestMethod "https://<firmenadr>/confluence_secure/rest/api/content/258775490" -Headers @{Authorization="Basic $b64"}  
Member: Crusher79
Crusher79 Feb 16, 2024 at 10:14:56 (UTC)
Goto Top
# Send a GET request including Basic authentication.
$Params = @{
	Uri = "https://jsonplaceholder.typicode.com/posts"  
	Authentication = "Basic"  
	Credential = $Cred
}

Invoke-RestMethod @Params

https://adamtheautomator.com/invoke-restmethod/

Dort werden Creds und Token behandelt. Ggf. auf diese Art?
Member: MichaelMN
MichaelMN Feb 16, 2024 at 11:13:49 (UTC)
Goto Top
Das war's, herzlichen Dank! face-smile